home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.5 Applications 2004 May / SGI IRIX 6.5 Applications 2004 May.iso / dist / java3d.idb / usr / demos / java / j3d / programs / examples / PrintCanvas3D / ImageDisplayer.java.z / ImageDisplayer.java
Encoding:
Java Source  |  2003-08-08  |  3.6 KB  |  113 lines

  1. /*
  2.  *    @(#)ImageDisplayer.java 1.5 02/04/01 15:04:10
  3.  *
  4.  * Copyright (c) 1996-2002 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * Redistribution and use in source and binary forms, with or without
  7.  * modification, are permitted provided that the following conditions
  8.  * are met:
  9.  *
  10.  * - Redistributions of source code must retain the above copyright
  11.  *   notice, this list of conditions and the following disclaimer.
  12.  *
  13.  * - Redistribution in binary form must reproduce the above copyright
  14.  *   notice, this list of conditions and the following disclaimer in
  15.  *   the documentation and/or other materials provided with the
  16.  *   distribution.
  17.  *
  18.  * Neither the name of Sun Microsystems, Inc. or the names of
  19.  * contributors may be used to endorse or promote products derived
  20.  * from this software without specific prior written permission.
  21.  *
  22.  * This software is provided "AS IS," without a warranty of any
  23.  * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
  24.  * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
  25.  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
  26.  * EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES
  27.  * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  28.  * DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN
  29.  * OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR
  30.  * FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
  31.  * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
  32.  * LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE,
  33.  * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
  34.  *
  35.  * You acknowledge that Software is not designed,licensed or intended
  36.  * for use in the design, construction, operation or maintenance of
  37.  * any nuclear facility.
  38.  */
  39.  
  40. import javax.swing.*;
  41. import java.awt.BorderLayout;
  42. import java.awt.Container;
  43. import java.awt.Color;
  44. import java.awt.Dimension;
  45. import java.awt.Graphics;
  46. import java.awt.image.BufferedImage;
  47. import java.awt.event.*;
  48.  
  49. class ImageDisplayer extends JFrame implements ActionListener {
  50.     BufferedImage bImage;
  51.  
  52.     private class ImagePanel extends JPanel {
  53.     public void paint(Graphics g) {
  54.         g.setColor(Color.black);
  55.         g.fillRect(0, 0, getSize().width, getSize().height);
  56.         g.drawImage(bImage, 0, 0, this);
  57.     }
  58.  
  59.     private ImagePanel() {
  60.         setPreferredSize(new Dimension(bImage.getWidth(),
  61.                        bImage.getHeight()));
  62.     }
  63.     }
  64.  
  65.     private JMenuItem printItem;
  66.     private JMenuItem closeItem;
  67.  
  68.     public void actionPerformed (ActionEvent event) {
  69.     Object target = event.getSource();
  70.  
  71.     if (target == printItem) {
  72.         new ImagePrinter(bImage).print();
  73.     }
  74.     else if (target == closeItem) {
  75.         this.removeAll();
  76.         this.setVisible(false);
  77.         bImage = null;
  78.     }
  79.     }
  80.  
  81.     private JMenuBar createMenuBar() {
  82.     JMenuBar menuBar = new JMenuBar();
  83.     JMenu fileMenu = new JMenu("File");
  84.     printItem = new JMenuItem("Print...");
  85.     printItem.addActionListener(this);
  86.     closeItem = new JMenuItem("Close");
  87.     closeItem.addActionListener(this);
  88.     fileMenu.add(printItem);
  89.     fileMenu.add(new JSeparator());
  90.     fileMenu.add(closeItem);
  91.     menuBar.add(fileMenu);
  92.     return menuBar;
  93.     }
  94.  
  95.     ImageDisplayer(BufferedImage bImage) {
  96.     this.bImage = bImage;
  97.     this.setTitle("Off-screen Canvas3D Snapshot");
  98.  
  99.     // Create and initialize menu bar
  100.     this.setJMenuBar(createMenuBar());
  101.  
  102.     // Create scroll pane, and embedded image panel
  103.     ImagePanel imagePanel = new ImagePanel();
  104.     JScrollPane scrollPane = new JScrollPane(imagePanel);
  105.     scrollPane.getViewport().setPreferredSize(new Dimension(700, 700));
  106.  
  107.     // Add scroll pane to the frame and make it visible
  108.     this.getContentPane().add(scrollPane);
  109.     this.pack();
  110.     this.setVisible(true);
  111.     }
  112. }
  113.